package com.ruoyi.oto.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.core.domain.PageQueryDTO;
import com.ruoyi.common.core.domain.entity.MemberUser;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.oto.domain.CompanyTags;
import com.ruoyi.oto.domain.CompanyTagsCore;
import com.ruoyi.oto.domain.dto.CompanyTagCoreQuryDTO;
import com.ruoyi.oto.domain.dto.CompanyTagUpdateDTO;
import com.ruoyi.oto.domain.dto.SubmitApplyTagValueDTO;
import com.ruoyi.oto.domain.dto.TagsCoreDTO;
import com.ruoyi.oto.domain.vo.CompanyTagCoreQueryParamVO;
import com.ruoyi.oto.tagvisible.TagVisibleRange;

import java.util.List;

/**
 * 企业标签服务
 *
 * @author ruoyi
 */
public interface CompanyTagsCoreService extends IService<CompanyTagsCore>
{
    /**
     * 分页查询企业标签
     * @param sysUser
     * @param companyTagCoreQuryDTO
     * @param page
     * @return
     */
    IPage<CompanyTagsCore> pageTags(SysUser sysUser, CompanyTagCoreQuryDTO companyTagCoreQuryDTO, IPage<CompanyTagsCore> page);

    /**
     * 保存企业标签
     * @param tagsCoreDTO
     */
    CompanyTagsCore saveCompanyTagsCore(TagsCoreDTO tagsCoreDTO, LoginUser loginUser);

    /**
     * 删除企业标签
     * @param tagIds
     * @param loginUser
     * @return
     */
    boolean deleteCompanyTagsCore(List<Long> tagIds, LoginUser loginUser);

    /**
     * 获取待审核的标签
     * @param pageQueryDTO
     * @param loginUser
     * @return
     */
    IPage<CompanyTags> listChangedCompanyTags(PageQueryDTO pageQueryDTO, LoginUser loginUser);

    /**
     * 审核已改变的标签
     * @param applyTagValueDTO
     * @param loginUser
     */
    void applyChangedCompanyTags(SubmitApplyTagValueDTO applyTagValueDTO, LoginUser loginUser);

    /**
     * 小程序-查询可用的标签库
     * @return
     */
    List<CompanyTagsCore> listUseableCompanyTagsCore();

    /**
     * 获取标签的可见权限设置
     * @param tagId
     * @return
     */
    TagVisibleRange getTagVisibleRange(Long tagId);

    /**
     * 小程序-保存企业选择的标签-
     * @param companyTagUpdateDTO
     * @param loginUser
     */
    void saveCompanyTags(CompanyTagUpdateDTO companyTagUpdateDTO, LoginUser loginUser);


}
